// --------------------------------------------------------------------------------------------------------------------
// <copyright file="fileTextSplitResultSet.cs" company="imbVeles" >
//
// Copyright (C) 2018 imbVeles
//
// This program is free software: you can redistribute it and/or modify
// it under the +terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program.  If not, see http://www.gnu.org/licenses/. 
// </copyright>
// <summary>
// Project: imbSCI.Core
// Author: Goran Grubic
// ------------------------------------------------------------------------------------------------------------------
// Project web site: http://blog.veles.rs
// GitHub: http://github.com/gorangrubic
// Mendeley profile: http://www.mendeley.com/profiles/goran-grubi2/
// ORCID ID: http://orcid.org/0000-0003-2673-9471
// Email: hardy@veles.rs
// </summary>
// ------------------------------------------------------------------------------------------------------------------
using imbSCI.Core.extensions.data;
using imbSCI.Data;
using imbSCI.Data.enums;
using System;

namespace imbSCI.Core.files.search
{
    /// <summary>
    /// Result set of file slitting operation
    /// </summary>
    /// <seealso cref="fileTextSearchResultSet" />
    public class fileTextSplitResultSet : fileTextSearchResultSet
    {
        private String _filepathFormat = "splits\\{0}.txt";

        /// <summary>
        ///
        /// </summary>
        public String filepathFormat
        {
            get { return _filepathFormat; }
            set { _filepathFormat = value; }
        }

        public override fileTextSearchResult this[string needle]
        {
            get
            {
                if (!resultSet.ContainsKey(needle))
                {
                    String filepath = String.Format(filepathFormat, needle);
                    resultSet.Add(needle, new fileTextSearchResult(needle, filepath, false));
                }
                return base[needle];
            }
        }

        /// <summary>
        /// Saves the slits.
        /// </summary>
        /// <param name="pathPrefix">The path prefix.</param>
        /// <param name="mode">The mode.</param>
        public void saveSlits(String pathPrefix = "", getWritableFileMode mode = getWritableFileMode.overwrite)
        {
            foreach (fileTextSearchResult splitRes in this)
            {
                splitRes.saveLineContent(pathPrefix.add(splitRes.filePath, "\\"), mode);
            }
        }

        public fileTextSplitResultSet(String __filepathFormat = "splits\\{0}.txt")
        {
            filepathFormat = __filepathFormat;
        }
    }
}